package top.jle.spring.basic.sensitive;

public enum SensitiveType {

    /**
     * 身份证
     */
    ID_CARD{
        @Override
        public String mark(String value) {
            return value.replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1****$2");
        }
    },
    /**
     * 手机号
     */
    PHONE{
        @Override
        public String mark(String value) {
            return value.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        }
    },
    EMAIL{
        @Override
        public String mark(String value) {
            return value.replaceAll("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)", "$1****$3$4");
        }
    },
    /**
     * 用户名
     */
    USERNAME {
        @Override
        public String mark(String value) {
            return value.replaceAll("(\\S)\\S(\\S*)", "$1*$2");
        }
    };

    public abstract String mark(String value);

}
